"""
selenium 也可以执行 js .
js 能做的事情 , 大部分 selenium 也能做 .


当 selenium 不能处理某些内容的时候 , 可以使用 js 来处理 .


driver.execute_script('js脚本')
# 执行 js脚本


driver.execute_script('return js脚本')
# 执行 js脚本 , 并拿到返回值


driver.execute_script('return js脚本1 ; return js脚本2 ; return js脚本3')
# 多条 js 脚本时 , 只有第一条可以使用 return 获取返回值 . 这里的 脚本2 和 脚本3 的返回值是获取不到的 .

"""
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions

from basic.s1_pytest_base import TestBase


class TestJS(TestBase):

    def test_oo1(self):
        """
        执行 js 完成定位 , 点击等功能:
            定位 输入框
            定位 搜索按钮
            滑动 到底部
            定位 下一页
        """
        self.driver.get('https://www.baidu.com')

        self.driver.execute_script('return document.querySelector("#kw")').send_keys('领克05')
        self.driver.execute_script('return document.getElementById("su")').click()
        self.driver.execute_script('document.documentElement.scrollTop=10000')
        self.wait.until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, '.n')))
        self.driver.execute_script('return document.querySelector(".n")').click()

        print(self.driver.execute_script('return JSON.stringify(performance.timing)'))
        print(self.driver.execute_script('return document.title'))

    def test_oo2(self):
        self.driver.get('https://www.12306.cn/index/')
        js = 'return a=document.querySelector("#train_date");a.removeAttribute("readonly");a.value="2022-10-15"'
        ele = self.driver.execute_script(js)
        print()
        print(ele.tag_name)
        print(self.driver.execute_script('return document.querySelector("#train_date").value'))
        print('买票参加20大')
